package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import modelo.Funcionario;
import factory.ConnectionFactory;
public class FuncionarioDAO 
{
	private Connection connection;
    String nome;
    int cpf;
    String email;
    String endereco;
    String funcao;
    double salario;

    public FuncionarioDAO(){
       this.connection = new ConnectionFactory().getConnection();
    }

    public void adiciona(Funcionario funcionario){
        String sql = "INSERT INTO academia.funcionario(nome_funcionario,cpf_funcionario,email_funcionario,endereco_funcionario,funcao_funcionario,salario_funcionario) VALUES(?,?,?,?,?,?)";
        try {
           PreparedStatement stmt = connection.prepareStatement(sql);
           stmt.setString(1, funcionario.getNome());
           stmt.setString(2, funcionario.getCpf());
           stmt.setString(3, funcionario.getEmail());
           stmt.setString(4, funcionario.getEndereco());
           stmt.setString(5, funcionario.getFuncao());
           stmt.setDouble(6, funcionario.getSalario());
           stmt.execute();
           stmt.close();
        } catch (SQLException u) {
            throw new RuntimeException(u);
        }
    }
    
    public Funcionario seleciona(String cpf){
        String sql = "SELECT * FROM academia.funcionario WHERE cpf_funcionario = ?";
        try {
        	PreparedStatement stmt = connection.prepareStatement(sql);
        	stmt.setString(1, cpf);
        	ResultSet rs = stmt.executeQuery(); 
        	rs.next();
        	Funcionario funcionario = new Funcionario();
        	funcionario.setNome(rs.getString("nome_funcionario"));
        	funcionario.setCpf(rs.getString("cpf_funcionario"));
        	funcionario.setEmail(rs.getString("email_funcionario"));
        	funcionario.setEndereco(rs.getString("endereco_funcionario"));
        	funcionario.setFuncao(rs.getString("funcao_funcionario"));
        	funcionario.setSalario(rs.getDouble("salario_funcionario"));
       		rs.close();
       		stmt.close();
       		return funcionario;
        } catch (SQLException u) {
            throw new RuntimeException(u);
        }
    }
    
    public void altera(Funcionario funcionario)
    {
        String sql = "UPDATE academia.funcionario SET nome_funcionario=?,email_funcionario=?,endereco_funcionario=?,funcao_funcionario=?,salario_funcionario=? WHERE cpf_funcionario=?";
        try
        {
           PreparedStatement stmt = connection.prepareStatement(sql);
           stmt.setString(1, funcionario.getNome());
           stmt.setString(2, funcionario.getEmail());
           stmt.setString(3, funcionario.getEndereco());
           stmt.setString(4, funcionario.getFuncao());
           stmt.setDouble(5, funcionario.getSalario());
           stmt.setString(6, funcionario.getCpf());
           stmt.execute();
           stmt.close();
        }
        catch (SQLException u)
        {
            throw new RuntimeException(u);
        }
    }
    
    public void excluir(String cpf)
    {
        String sql = "delete FROM academia.funcionario WHERE cpf_funcionario = ?";
        try
        {
        	PreparedStatement stmt = connection.prepareStatement(sql);
        	stmt.setString(1, cpf);
        	stmt.execute();
       		stmt.close();
        }
        catch (SQLException u) 
        {
            throw new RuntimeException(u);
        }
    }

	
}
